Modern high performance computer systems are capable of supporting multiple users and executing multiple processes or applications started by different users at the same time. Term scheduling refers to allocation of central processor unit (CPU) resources among multiple processes owned by different users in a computer system. It will be appreciated by persons of skill in the art that the fraction of the total CPU resources allocated to a particular process may depend on the number of other processes in the system and a relative importance of the process in comparison with the other processes in the system.
Another way of allocating system resources is to provide a process group, rather than a single process, with a fixed share of CPU resources. In other words, one or more processes executing on a central processing unit of a computer system can be combined into process groups, and each process group is allocated a share of the system resources that are distributed among individual processes of this process group. The system resources can be distributed among processes of the process group in an equal or unequal manner. The processes can be combined into aforementioned process groups based on various criteria, including, but not limited to, user id of the user executing the process, group id of the user executing the process, or based on any other appropriate classification. The nature of the classification is not critical to the present invention.
Modern operating systems include the concept of processor sets, which is a group of processing executing on a specific set of processors. Only those processes that are explicitly bound to a processor set are permitted to be executed on processors that belong to that processor set. Presently, there exists no resource allocation scheme that would leverage the advantages of the processor set architecture and have an ability to distribute CPU resources among multiple process groups in a pre-defined manner.